﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SEG.Model;
using Common.DataAccess;

namespace SEG.DataAccess.DataAccess
{
    public class AdministrarPermisosDataAccess : GenericEntityManagerDataAccess<Permiso, AdministrarPermisosCriteria, AdministrarPermisosView, SEGContext>
    {
        protected override Permiso ReadEntity(Guid id)
        {
            return ObjectContext.Permisos.
                Include("Formulario").
                Include("Accion").
                Where(permiso => permiso.ID_Permiso == id).
                FirstOrDefault();
        }

        public override List<AdministrarPermisosView> Read(AdministrarPermisosCriteria criteria)
        {
            return ObjectContext.Permisos.
                Include("Formulario").
                Include("Accion").
                Where(permiso => (String.IsNullOrEmpty(criteria.Nombre) || permiso.Nombre.Contains(criteria.Nombre))).
                Select(permiso => new AdministrarPermisosView
                {
                    ID = permiso.ID_Permiso,
                    Nombre = permiso.Nombre,
                    Formulario = permiso.Formulario.Nombre,
                    Acciones = permiso.Accion.Select(c => c.Descripcion)
                }).OrderBy(c => c.Nombre).ToList();
        }

        public override List<Permiso> ReadEntities()
        {
            var list = ObjectContext.Permisos.
                Include("Formulario").
                Include("Accion").
                OrderBy(g => g.Nombre).ToList();
            return list;
        }
    }
}
